Zapis na COM port

Otázka od: Petr Lupinek

3. 5. 2004 9:43





Zdravim,

prepisuji komunikacni rutinu z programu, ktery ovladal zarizeni pres COM
port. Byl napsany pro W98 a primo pristupoval k UARTu (8250), pro XP to
samozrejme nechodi.

Chci pouzit unitu SynaSer

v deklaraci je externi dll

function Inport(PortNum:word):word; stdcall; external 'ntport.dll';
procedure Outport(PortNum:word; Data:word); stdcall; external 'ntport.dll';



 OutPort(BasePort + 4, 3) - nahradim ser.DTR a ser.RTS
 Result:=(InPort(BasePort+6) and $10 ) - cteni CTS = ser.CTS

A nasleduje problem

 OutPort(BasePort + 3, $40);
 Delayms(20); //pockej 20 ms
 OutPort(BasePort + 3,0);

Podle dokumentace je tento bit -> 0 = turn break off, 1 = force spacing
break state

vyrobi to (podle osciloskopu) 20ms impuls na TX.



Jde to nejak provest pomoci SynaSer? Nebo jakkoliv, aby to slo korektne po
XP.

Diky.

WinXP Prof SP1, D4 C/S Upd. #3,


S pozdravem

Ing. Petr Lupinek
datove komunikacni systemy
odbor Informatika
ALIACHEM a.s. o.z SYNTHESIA
tel.: 466825535
mob.: +420 736 505 512


Odpovedá: Erik Salaj, Winsoft

3. 5. 2004 10:05

> A nasleduje problem
>
> OutPort(BasePort + 3, $40);
> Delayms(20); //pockej 20 ms
> OutPort(BasePort + 3,0);
>
> Podle dokumentace je tento bit -> 0 = turn break off, 1 = force spacing
> break state
>
> vyrobi to (podle osciloskopu) 20ms impuls na TX.

Windows API pre seriovu komunikaciu priamo podporuje
break a nas ComPort komponent obsahuje k tomu metody
ClearBreak a SetBreak. Podobne to moze byt v SynaSer.

Problemom vo Windowse je dosiahnut presnu dlzku impulzu,
ale pokial tych 20ms je len minimalna hodnota a moze byt
aj vecsia tak staci pouzit Sleep.

Erik


Odpovedá: Lukas Gebauer

3. 5. 2004 10:34

> Chci pouzit unitu SynaSer
> A nasleduje problem
>
> OutPort(BasePort + 3, $40);
> Delayms(20); //pockej 20 ms
> OutPort(BasePort + 3,0);
>
> Jde to nejak provest pomoci SynaSer? Nebo jakkoliv, aby to slo
> korektne po XP.

ser.setbreak(20);

  (ta hodnota 20 je tech tvych 20ms.)



--
Lukas Gebauer.

E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Ararat Synapse - TCP/IP Lib.